package app.framework.freemarker.model;

import freemarker.template.TemplateMethodModel;
import freemarker.template.TemplateModelException;
import jasmine.framework.common.util.CheckUtil;
import jasmine.framework.common.util.I18nUtil;
import jasmine.framework.common.util.StringUtil;
import org.apache.commons.text.StringEscapeUtils;

import java.util.List;

/**
 * <p>
 * 翻译 HTML 页面里的多语言。
 * </p>
 *
 * @author mh.z
 */
public class I18nHtmlMethodModel implements TemplateMethodModel {

    @Override
    public Object exec(List args) throws TemplateModelException {
        CheckUtil.notNull(args, "args null");

        if (args.size() < 1) {
            return "";
        }

        String messageKey = (String) args.get(0);
        Object[] messageArgs = (args.size() > 1)
                ? args.subList(1, args.size()).toArray()
                : (new Object[0]);
        // 获取多语言
        String resultMessage = I18nUtil.getMessageAllowNone(messageKey, messageArgs);

        // HTML 转义
        if (StringUtil.isNotEmpty(resultMessage)) {
            resultMessage = escape(resultMessage);
        }

        return resultMessage;
    }

    /**
     * 转义字符串
     *
     * @param source
     * @return
     */
    protected String escape(String source) {
        if (source == null) {
            return null;
        }

        return StringEscapeUtils.escapeHtml4(source);
    }

}
